From 9facd0088446b1b4162c350cf6e1ee28242c8325 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Mon, 16 Nov 2015 19:34:24 +0100 Subject: [PATCH] cssprovider: Only push a new scanner when none exists For @import, we want to emit the error as part of the @import statement, not as part of the new file. --- gtk/gtkcssprovider.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c index fbe9163dfd..5c179361ea 100644 --- a/gtk/gtkcssprovider.c +++ b/gtk/gtkcssprovider.c @@ -2728,13 +2728,18 @@ gtk_css_provider_load_internal (GtkCssProvider *css_provider, } else { - scanner = gtk_css_scanner_new (css_provider, - parent, - parent ? parent->section : NULL, - file, - ""); + if (parent == NULL) + { + scanner = gtk_css_scanner_new (css_provider, + parent, + parent ? parent->section : NULL, + file, + ""); - gtk_css_scanner_push_section (scanner, GTK_CSS_SECTION_DOCUMENT); + gtk_css_scanner_push_section (scanner, GTK_CSS_SECTION_DOCUMENT); + } + else + scanner = parent; gtk_css_provider_error (css_provider, scanner, @@ -2743,9 +2748,12 @@ gtk_css_provider_load_internal (GtkCssProvider *css_provider, "Failed to import: %s", load_error->message); - gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_DOCUMENT); + if (parent == NULL) + { + gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_DOCUMENT); - gtk_css_scanner_destroy (scanner); + gtk_css_scanner_destroy (scanner); + } } } -- 2.30.2